package com.venusource.wechat.service;

import com.venusource.exception.BusinessException;
import com.venusource.wechat.vo.*;

import javax.swing.text.html.Option;
import java.util.Optional;

public interface IWechatService {
  /**
   * 查询accesstoken
   *
   * @return
   */
  AccessToken getAccessToken();


  /**
   * 查询通讯录accesstoken
   *
   * @return
   */
  AccessToken getAddressBookAccessToken();

  /**
   * 查询jsApiTicket
   *
   * @return
   */
  JsApiTicket getJsApiTicket();


  /**
   * agent jsApiTicket
   *
   * @return
   */
  JsApiTicket getAgentJsApiTicket();

  /**
   * oauth2登录重定向
   *
   * @param url
   * @param state
   * @return
   */
  String redirect(String url, String state);

  /**
   * oauth2登录 code换token
   *
   * @param code
   * @return
   */
  String authorize(String code) throws BusinessException;

  /**
   * token解析用户
   *
   * @return
   */
  Optional<UserDetail> parserToken();

  /**
   * 构造config初始化企业微信
   * @param url
   * @return
   */
  Config getConfig(String url);

  /**
   * 构造agentconfig初始化通信录等
   * @param url
   * @return
   */
  AgentConfig getAgentConfig(String url);


  /**
   * 发送文本消息
   * @param textMessage
   */
  void send(TextMessage textMessage);
}
